package com.yzk.auction.service;

import com.yzk.auction.dao.GoodsDao;
import com.yzk.auction.entity.FirstCategory;
import com.yzk.auction.entity.GoodsDTO;
import com.yzk.auction.entity.SecondCategory;
import com.yzk.auction.utils.PageModel;

import java.sql.SQLException;
import java.util.List;

/**
 * Author: 园中葵小组成员
 * Description:后台管理商品信息服务类
 *             对GoodsDao进行调用，对代码进行前置检查，或后置结果处理
 */
public class GoodsService {
    private GoodsDao goodsDao = new GoodsDao();
    /**
     * 更新商品信息
     * @param num
     * @param price
     * @param goods_id
     * @throws SQLException
     */
    public void  undateGoodsNum(int num, double price, int goods_id) throws SQLException {
        GoodsDao goodsDao = new GoodsDao();
        goodsDao.undateGoodsNum(num,price,goods_id);
    }


    /**
     * 分页查询商品
     * @param page 页号
     * @param rows 每页记录数
     * @return 分页模型对象
     */
    public PageModel pagination(int page,int rows) {
        if(rows == 0) {
            throw new RuntimeException("无效的rows参数");
        }
        return goodsDao.pagination(page, rows);
    }
    /**
     * 查询油画数据
     * @param
     * @param
     * @return GoodsDTO商品详情对象
     * */
    public static List<GoodsDTO> listGoods(){
        return GoodsDao.query();
    }

    /**
     * 根据id删除商品
     * @param id
     */
    public void delete(Integer id){
        goodsDao.delete(id);
    }

    /**
     * 获取所有一级分类
     * @return
     */
    public List<FirstCategory> findAllFirstCategory(){
        return goodsDao.findAllFirstCategory();
    }
    /**
     * 获取所有二级分类
     * @return
     */
    public List<SecondCategory> findAllSecondCategory(){
        return goodsDao.findAllSecondCategory();
    }

    /**
     * 根据二级分类名查询数据，并分页显示
     * @param second_cid 一级分类id
     * @param page 页号
     * @param rows 每页记录数
     * @return PageModel分页对象
     */
    public PageModel paginationsecondid(String second_cid, int page, int rows) throws Exception {
        if(rows == 0) {
            throw new RuntimeException("无效的rows参数");
        }
        return goodsDao.paginationsecondid(second_cid, page, rows);
    }
    /**
     * 分页模糊查询商品
     * @param page 页号
     * @param rows 每页记录数
     * @return 分页模型对象
     */
    public PageModel paginationlike(String like, int page, int rows) {
        if(rows == 0) {
            throw new RuntimeException("无效的rows参数");
        }
        return goodsDao.paginationLike(like, page, rows);
    }
    /** Y
     * 根据一级分类id获取二级分类
     * @return
     */
    public List<SecondCategory> findSecondById(Integer id){
        return goodsDao.findSecondById(id);
    }

    /** Y
     * 添加商品
     * @param goodsDTO
     * @return 添加成功影响的行数
     */
    public int createGoods(GoodsDTO goodsDTO){
        return goodsDao.createGoods(goodsDTO);
    }

    /** Y
     * 根据商品id查询商品信息
     * @param id
     * @return 商品扩展实体对象
     */
    public GoodsDTO findGoodsById(Integer id){
        return goodsDao.findGoodsById(id);
    }

    /** Y
     * 更新数据
     * @param newGoodsDTO
     * @param isPictureModified
     */
    public void gupdate(GoodsDTO newGoodsDTO,int isPictureModified) {
        GoodsDTO oldGoodsDTO = this.findGoodsById(newGoodsDTO.getGoods_id());
        oldGoodsDTO.setGoods_name(newGoodsDTO.getGoods_name());
        oldGoodsDTO.setFirst_cid(newGoodsDTO.getFirst_cid());
        oldGoodsDTO.setSecond_cid(newGoodsDTO.getSecond_cid());
        oldGoodsDTO.setStart_time(newGoodsDTO.getStart_time());
        oldGoodsDTO.setEnd_time(newGoodsDTO.getEnd_time());
        oldGoodsDTO.setLow_price(newGoodsDTO.getLow_price());
        oldGoodsDTO.setPrice_markup(newGoodsDTO.getPrice_markup());
        oldGoodsDTO.setAppraisal_price(newGoodsDTO.getAppraisal_price());
        oldGoodsDTO.setGoods_desc(newGoodsDTO.getGoods_desc());
        if(isPictureModified == 1) {
            oldGoodsDTO.setGoods_picture(newGoodsDTO.getGoods_picture());
        }
        goodsDao.gupdate(oldGoodsDTO);
    }

}
